package com.hmall.api.fallback;

import com.hmall.api.client.CartClient;
import com.hmall.common.exception.BizIllegalException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;

import java.util.Collection;


@Slf4j
public class CartClientFallback implements FallbackFactory<CartClient> {
    @Override
    public CartClient create(Throwable cause) {
        //创建CartClient接口实现类, 其中的方法, 编写失败降级的处理逻辑
        return new CartClient() {
            @Override
            public void deleteCartItemByIds(Collection<Long> ids) {
            // 涉及到分布式锁, 需要将异常抛出来(分布式事务,一起回滚)
                log.error("调用删除购物车条目失败, 具体参数为: {}", ids, cause);
                throw new BizIllegalException("调用删除购物车条目失败!");
            }
        };
    }
}
